#pragma once
#include "PDTCodeGraph.h"
#include <map>

class PDTCG2SC {
public:
	typedef map<string, int> Var2BoundMap_t;
	Var2BoundMap_t var2BoundMap;
	int bound;
	PDTCodeGraph * cg;

	PDTCG2SC(PDTCodeGraph & aCg, int aBound=32) :
		bound(aBound), cg(&aCg) {

	}

	void setVarBound(string varName, int bound) {
		var2BoundMap[varName] = bound;
	}
	int getVarBound(string & varName) const {
		Var2BoundMap_t::const_iterator it = var2BoundMap.find(varName);
		if (it != var2BoundMap.end())
			return it->second;
		return bound;
	}

	void * toBlif() {
		/*
		 * Implement a function that returns a blif file equivalent to the code/logic
		 */
		return NULL;
	}

	void * toAIG() {
		/*
		 * Implement a function that returns an ABC AIG netlist equivalent to the code/logic.
		 * This is my preferable option.
		 * This will use the ABC C/C++ API to instantiate input, latch, AND, and Not gates.
		 */
		return NULL;
	}
};
